The present invention generally relates to the field of software systems, and more specifically, to a software platform for facilitating data interchange between units of a pervasive computing system.
Pervasive computing, also known as ubiquitous computing, is an emerging field involving the distribution of data monitoring and processing capabilities beyond a small number of traditional server or client computer systems to additionally include a large number of very small computing units, or nodes, distributed at strategic locations throughout a target environment. The use of large numbers of such nodes has been rendered technologically and economically feasible by recent improvements in electronics design and manufacturing, and this approach may be employed in a number of different applications to solve different categories of problems. For example, in one application, the nodes may be embedded within the structure of a bridge, collecting data such as current structural rigidity in order to continuously monitor and report on the safety and stability of the bridge by providing data to a server-side program. As another example, the nodes may be used in control systems to monitor and control the operations of devices, such as controlling heat output and calculating statistics on the amount of energy expended. As a further example, the nodes could be used to monitor and report on the temperature of devices used in manufacturing, and to issue a warning if the temperature of any devices rises above a safe level. The number of such applications which may be constructed using the nodes is numerous and greatly varied.
In conventional systems employing such nodes, creating and deploying the programs that run on the client, servers, and nodes is difficult. This is particularly so in the case of one or more networks of nodes, each node of which has limited hardware resources and thus typically requires its programs to be written in a very low-level language, such as C or assembly. Since client and server systems lack such hardware constraints, their programs are typically written in a higher-level language, such as Java. Further, the nodes, having limited resources, typically use different protocols, e.g. communication protocols, than the more powerful clients. Thus, enabling node and client programs to communicate to solve a given problem is difficult, requiring proper translation both of programs and other data and of protocols. Such translation requires a great deal of effort and care, requiring tedious and error-prone programming to implement.